/*********************************************************************************
 *      Copyright:  (C) 2025 YANG Studio
 *                  All rights reserved.
 *
 *       Filename:  mq2.c
 *    Description:  This file 
 *                 
 *        Version:  1.0.0(27/05/25)
 *         Author:  YANG JIAYU <yangjiayu@gmail.com>
 *      ChangeLog:  1, Release initial version on "27/05/25 18:54:14"
 *                 
 ********************************************************************************/
#include "./BSP/ADC/adc.h"      // 包含ADC驱动头文件，用于配置和操作ADC外设
#include "./BSP/MQ2/mq2.h"      // 包含MQ2传感器驱动头文件，定义相关宏和函数声明
#include "./SYSTEM/delay/delay.h"  // 包含延时函数头文件，用于添加延时操作

/**
 * @brief       MQ2气体传感器初始化函数
 * @param       无
 * @retval      无
 */
void mq2_init(void)
{
    GPIO_InitTypeDef gpio_init_struct;  // 定义GPIO初始化结构体变量

    MQ2_ADC_CHX_GPIO_CLK_ENABLE();  // 使能MQ2传感器ADC通道对应的GPIO时钟（通过宏定义实现）
    
    // 配置GPIO引脚为模拟输入模式
    gpio_init_struct.Pin = MQ2_ADC_CHX_GPIO_PIN;  // 设置GPIO引脚（通过宏定义指定具体引脚）
    gpio_init_struct.Mode = GPIO_MODE_ANALOG;     // 设置GPIO模式为模拟输入
    HAL_GPIO_Init(MQ2_ADC_CHX_GPIO_PORT, &gpio_init_struct);  // 初始化GPIO配置

    adc_init();  // 调用ADC初始化函数，配置ADC外设（采样周期、转换模式等）
}

/**
 * @brief       获取MQ2传感器的数值（ADC转换结果）
 * @param       无
 * @retval      uint32_t类型的ADC转换结果（10次采样的平均值）
 */
uint32_t mq2_get_val(void)
{
    return adc_get_result_average(MQ2_ADC_CHX, 10);  // 调用ADC采样函数，获取指定通道10次采样的平均值
}

